Making the Compilation “Pipeline” Explicit: Dynamic Compilation Using Trace Tree Serialization
نویسندگان
چکیده
Trace-based compilers operate by dynamically discovering loop headers and then recording and compiling all paths through a loop that are executed with sufficient frequency. The different paths through each loop form a tree, with the loop header at the root, in which common code is shared up-stream. Such trace-trees can be serialized in a specific manner that allows us to organize the compiler pipeline as a series of filters. We have implemented such a compiler pipeline that has completely linear runtime behavior. Further, it has only two write barriers, meaning that substantial parts of the compilation effort could potentially be parallelized on future multi-core platforms.
منابع مشابه
Incremental Dynamic Code Generation with Trace Trees
The unit of compilation for traditional just-in-time compilers is the method. We have explored trace-based compilation, in which the unit of compilation is a loop, potentially spanning multiple methods and even library code. Using a new intermediate representation that is discovered and updated lazily on-demand while the program is being executed, our compiler generates code that is competitive...
متن کاملEnergy-Aware Compilation and Execution in Java-Enabled Mobile Devices
Java-enabled wireless devices are preferred for various reasons such as enhanced user experience and the support for dynamically downloading applications on demand. The dynamic download capability supports extensibility of the mobile client features and centralizes application maintenance at the server. Also, it enables service providers to customize features for the clients. In this work, we e...
متن کاملA highly flexible, parallel virtual machine: design and experience of ILDJIT
ILDJIT, a new-generation dynamic compiler and virtual machine designed to support parallel compilation, is here introduced. Our dynamic compiler targets the increasingly popular ECMA-335 specification. The goal of this project is twofold: on one hand, it aims at exploiting the parallelism exposed by multi-core architectures to hide dynamic compilation latencies by pipelining compilation and exe...
متن کاملILDJIT: A parallel, free software and highly flexible Dy- namic Compiler
ILDJIT, a new-generation dynamic compiler and virtual machine designed to support parallel compilation, is here introduced. Our dynamic compiler is a free software released through the GNU General Public License (version 2) and it targets the increasingly popular ECMA-335 specification. The goal of this project is twofold: on one hand, it aims at exploiting the parallelism exposed by multi-core...
متن کاملTrace Based Compilation in Interpreter-less Execution Environments
Trace based compilation is a technique used in managed language runtimes to detect and compile frequently executed program paths. The goal is reduced compilation time and improved code quality since only “hot” parts of methods are ever compiled. Trace compilation is well suited for interpreter based runtime environments because the control flow of an application program is highly visible and re...
متن کامل